
{{#jsonFormat}}
class {{classname}} {
  /// The underlying value of this enum member.
  final {{dataType}} value;

  const {{classname}}._internal(this.value);

  {{#allowableValues}}
    {{#enumVars}}
      {{#description}}
  /// {{.}}
      {{/description}}
  static const {{classname}} {{{name}}} = const {{classname}}._internal({{{value}}});
    {{/enumVars}}
  {{/allowableValues}}
}

class {{classname}}FieldProcessor implements FieldProcessor<{{classname}}, {{dataType}}> {
    const {{classname}}FieldProcessor();

    {{classname}} deserialize({{dataType}} data) {
        switch (data) {
        {{#allowableValues}}
            {{#enumVars}}
            case {{{value}}}: return {{classname}}.{{{name}}};
            {{/enumVars}}
        {{/allowableValues}}
            default: throw('Unknown enum value to decode: $data');
        }
    }

    {{dataType}} serialize({{classname}} item) {
        return item.value;
    }
}
{{/jsonFormat}}
